﻿Imports DevComponents.DotNetBar

Public Class ucDSDanhmucsanpham

    Private dtDMSP As DataTable
    Private dmspBUS As New CategoriesBUS()

    Private Sub newButton_Click(sender As Object, e As EventArgs) Handles newButton.Click
        Dim uc As New ucCapnhatDanhmucsp(0, grdCategories.SelectedRows(0))
        uc.Dock = DockStyle.Fill
        AddHandler uc.Closed, AddressOf uc_Closed
        Dim parent = DirectCast(Application.OpenForms.Item(0), MetroAppForm)
        parent.ShowModalPanel(uc, DevComponents.DotNetBar.Controls.eSlideSide.Left)
    End Sub

    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        mdQuanLyBanHang.InitQuanLyBanHang()
        LoadData()
        ReloadWidthColumn()
        LoadComboboxSearch()
    End Sub

    Public Sub LoadData()
        dtDMSP = dmspBUS.Categories_List().Tables(0)
        grdCategories.DataSource = dtDMSP
        grdCategories.Sort(grdCategories.Columns(3), System.ComponentModel.ListSortDirection.Descending)
    End Sub

    Public Sub showdatecontrols()
        tbSearchStr.Visible = False
        LabelXTukhoa.Visible = False
        LabelXTungay.Visible = True
        DateTimeInputTungay.Visible = True
        LabelXDenngay.Visible = True
        DateTimeInputDenngay.Visible = True
    End Sub

    Public Sub hidedatecontrols()
        tbSearchStr.Visible = True
        LabelXTukhoa.Visible = True
        LabelXTungay.Visible = False
        DateTimeInputTungay.Visible = False
        LabelXDenngay.Visible = False
        DateTimeInputDenngay.Visible = False
    End Sub

    Public Sub LoadComboboxSearch()
        For Each col As DataGridViewColumn In grdCategories.Columns
            If col.Visible = True Then
                Dim ci As New ComboBoxItem(col.Name, col.HeaderText)
                ci.Tag = col.Tag
                cbSearchIn.Items.Add(ci)
            End If
        Next
        cbSearchIn.SelectedIndex = 0
    End Sub

    Public Sub ReloadWidthColumn()

        grdCategories.Columns(0).Visible = False

        grdCategories.Columns(1).Width = 200
        grdCategories.Columns(1).HeaderText = "Tên danh mục"
        grdCategories.Columns(1).Name = "tendanhmuc"
        grdCategories.Columns(1).Tag = "string"

        grdCategories.Columns(2).Width = 250
        grdCategories.Columns(2).HeaderText = "Mô tả"
        grdCategories.Columns(2).Name = "mota"
        grdCategories.Columns(2).Tag = "string"

        grdCategories.Columns(3).Width = 150
        grdCategories.Columns(3).HeaderText = "Ngày tạo"
        grdCategories.Columns(3).Name = "ngaytao"
        grdCategories.Columns(3).Tag = "date"

        grdCategories.Columns(4).Width = 150
        grdCategories.Columns(4).HeaderText = "Người tạo"
        grdCategories.Columns(4).Name = "nguoitao"
        grdCategories.Columns(4).Tag = "string"

        grdCategories.Columns(5).Width = 150
        grdCategories.Columns(5).HeaderText = "Ngày sửa"
        grdCategories.Columns(5).Name = "ngaysua"
        grdCategories.Columns(5).Tag = "date"

        grdCategories.Columns(6).Width = 150
        grdCategories.Columns(6).HeaderText = "Người sửa"
        grdCategories.Columns(6).Name = "nguoisua"
        grdCategories.Columns(6).Tag = "string"

    End Sub

    Private Sub cbSearchIn_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbSearchIn.SelectedIndexChanged
        Select Case cbSearchIn.SelectedIndex
            Case 0
                hidedatecontrols()
                tbSearchStr.WatermarkText = "Nhập tên nhà sản xuất"
                tbSearchStr.Mask = ""

            Case 1
                hidedatecontrols()
                tbSearchStr.WatermarkText = "Nhập mô tả"
                tbSearchStr.Mask = ""

            Case 2, 4
                showdatecontrols()
                DateTimeInputTungay.Value = Now
                DateTimeInputDenngay.Value = Now
            Case 3
                hidedatecontrols()
                tbSearchStr.WatermarkText = "Nhập tên người tạo"
                tbSearchStr.Mask = ""
            Case 5
                hidedatecontrols()
                tbSearchStr.WatermarkText = "Nhập tên người sửa"
                tbSearchStr.Mask = ""
            Case Else

        End Select
        tbSearchStr.Text = ""
    End Sub

    Private Sub FindNow_Click(sender As Object, e As EventArgs) Handles FindNow.Click
        If validation() = False Then
            Exit Sub
        End If

    End Sub

    Private Function validation() As Boolean
        Try
            Select Case cbSearchIn.SelectedIndex
                Case 2, 4
                    'Dim arrstr As String()
                    'arrstr = tbSearchStr.Text.Split("-")
                    'If Trim(arrstr(0)) = "" Or Trim(arrstr(1)) = "" Or Trim(arrstr(2)) = "" Then
                    '    BalloonTip1.SetBalloonText(tbSearchStr, "Vui lòng nhập ngày tháng")
                    '    BalloonTip1.ShowBalloon(tbSearchStr)
                    '    Return False
                    'End If

                    'If Integer.Parse(arrstr(0)) > 31 Or Integer.Parse(arrstr(0)) < 0 Then
                    '    Return False
                    'End If

                    'If Integer.Parse(arrstr(1)) < 0 Or Integer.Parse(arrstr(1)) > 12 Then
                    '    Return False
                    'End If

                    If DateTimeInputTungay.Value > DateTimeInputDenngay.Value Then
                        BalloonTip1.SetBalloonCaption(DateTimeInputDenngay, "Lỗi tìm kiếm")
                        BalloonTip1.SetBalloonText(DateTimeInputDenngay, "Ngày bắt đầu phải trước ngày kết thúc")
                        BalloonTip1.ShowBalloon(DateTimeInputDenngay)
                        Return False
                    End If

                Case Else
                    If tbSearchStr.Text = "" Then
                        BalloonTip1.SetBalloonCaption(tbSearchStr, "Lỗi tìm kiếm")
                        BalloonTip1.SetBalloonText(tbSearchStr, "Vui lòng nhập thông tin")
                        BalloonTip1.ShowBalloon(tbSearchStr)
                        Return False
                    End If
            End Select
            Return True

        Catch ex As Exception

        End Try

        Return True
    End Function

    Private Sub btEdit_Click(sender As Object, e As EventArgs) Handles btEdit.Click
        Dim uc As New ucCapnhatDanhmucsp(1, grdCategories.SelectedRows(0))
        uc.Dock = DockStyle.Fill
        AddHandler uc.Closed, AddressOf uc_Closed
        Dim parent = DirectCast(Application.OpenForms.Item(0), DevComponents.DotNetBar.Metro.MetroAppForm)
        parent.ShowModalPanel(uc, DevComponents.DotNetBar.Controls.eSlideSide.Left)
        If uc.ButtonItemSave.IsMouseDown Then
            LoadData()
        End If
    End Sub

    Private Sub uc_Closed(sender As Object)
        LoadData()
    End Sub

    Private Sub deleteButton_Click(sender As Object, e As EventArgs) Handles deleteButton.Click
        BalloonTip1.SetBalloonCaption(grdCategories, "Xóa danh mục ")
        Try
            If MessageBox.Show("Bạn có chắc chắn muốn xóa danh mục " + grdCategories.SelectedRows(0).Cells(1).Value.ToString(), "Thông báo", MessageBoxButtons.YesNo) = DialogResult.Yes Then
                If dmspBUS.Categories_Delete(Integer.Parse(grdCategories.SelectedRows(0).Cells(0).Value)) Then
                    BalloonTip1.SetBalloonText(grdCategories, "Thành công")
                    BalloonTip1.ShowBalloon(grdCategories)
                    LoadData()
                Else
                    BalloonTip1.SetBalloonText(grdCategories, "Thất bại ! Danh mục " + grdCategories.SelectedRows(0).Cells(1).Value.ToString() + " vẫn còn đang sữ dụng ")
                    BalloonTip1.ShowBalloon(grdCategories)
                End If
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub btPrint_Click(sender As Object, e As EventArgs) Handles btPrint.Click
        If MessageBox.Show("Bạn sẽ in danh sách danh mục sản phẩm này", "Thông báo", MessageBoxButtons.YesNo) = DialogResult.Yes Then
            PrintReport(True)
        End If
    End Sub

    Private Sub PrintReport(ByVal bolPrint As Boolean)
        Dim frmPrint As New frmReportViewer
        Dim strSelectionFormula As String = Nothing
        Dim rowGrid As DataGridViewRow
        Try
            For Each rowGrid In grdCategories.Rows
                If Not IsNothing(strSelectionFormula) Then
                    strSelectionFormula += " OR "
                End If
                strSelectionFormula += " {TDT_Category.CategoryID} = " & rowGrid.Cells("CategoryID").Value
            Next
            frmPrint.Text = Me.Text
            frmPrint.SelectionFormula = strSelectionFormula
            If bolPrint = False Then
                frmPrint.InitializeLifetimeService()
                frmPrint.ConfigReport("crpCategories.rpt", False)
                frmPrint.Show()
            Else
                frmPrint.ConfigReport("crpCategories.rpt", True)
                frmPrint.PrintReport()
            End If
        Catch ex As Exception
            objErrorLog.SaveError(ex.Message, Me.Name, "PrintReport", objUser.UserFullName)
            'SendError(ex)
        End Try
    End Sub

    Private Sub btReport_Click(sender As Object, e As EventArgs) Handles btReport.Click
        MessageBox.Show("Đang xử lý hiển thị danh sách danh mục sản phẩm này, vui lòng chờ", "Thông báo", MessageBoxButtons.YesNo)
        PrintReport(False)
    End Sub
End Class